home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 32
/
Aminet 32 (1999)(Schatztruhe)[!][Aug 1999].iso
/
Aminet
/
dev
/
lang
/
Python151_Src.lha
/
Python1.5_Source
/
Amiga
/
_allocufb.c
next >
Wrap
C/C++ Source or Header
|
1994-09-30
|
1KB
|
56 lines
RCS_ID_C="$Id: _allocufb.c,v 4.1 1994/09/29 23:09:02 jraja Exp $";
/*
* _allocufb.c - get a free ufb (SAS/C)
*
* Copyright © 1994 AmiTCP/IP Group,
* Network Solutions Development Inc.
* All rights reserved.
*/
#include <ios1.h>
#include <stdlib.h>
#include <errno.h>
/*
* Allocate new ufb, which is returned as return value. The corresponding fd
* is returned via fdp.
*/
struct UFB *
__allocufb(int *fdp)
{
struct UFB *ufb, *last_ufb;
int last_fd = 0;
/*
* find first free ufb
*/
last_ufb = ufb = __ufbs;
while (ufb != NULL && ufb->ufbflg != 0) {
last_ufb = ufb;
last_fd++;
ufb = last_ufb->ufbnxt;
}
/*
* Check if need to create one
*/
if (ufb == NULL) {
if ((ufb = malloc(sizeof(*ufb))) == NULL) {
errno = ENOMEM;
return NULL;
}
ufb->ufbnxt = NULL;
ufb->ufbflg = 0; /* => unused ufb */
if (last_ufb == NULL)
__ufbs = ufb;
else
last_ufb->ufbnxt = ufb;
*fdp = __nufbs++;
}
else
*fdp = last_fd;
return ufb;
}